package controllers;
import views.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import models.*;
/**
*
* The class that controlls MainView
*
*/
public class MainViewController {
private static volatile boolean isCancelled = false;
private MainView mainView;
public MainViewController(MainView mainView) {
this.mainView = mainView;
this.mainView.setStartButtonActionListener(new StartButtonActionListener());
}
/**
*
* The refresh swing worker
*
*/
public class Refresh extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() {
mainView.getStart().setEnabled(false);
while (!isCancelled) {
publish();
}
mainView.getStart().setEnabled(true);
return null;
}
@Override
protected void process(List<Void> lv) {
mainView.refresh();
}
}
/**
*
* Start Button ActionListener
*
*/
public class StartButtonActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
isCancelled = false;
TaskGenerator.deleteInstance();
TaskScheduler.deleteInstance();
TaskGenerator.getInstance()
.setMaxServiceTime(Long.parseLong(mainView.getMaxServiceTime().getText()));
TaskGenerator.getInstance()
.setMinServiceTime(Long.parseLong(mainView.getMinServiceTime().getText()));
TaskGenerator.getInstance()
.setMaxArrivalInterval(Long.parseLong(mainView.getMaxArrivalInterval().getText()));
TaskGenerator.getInstance()
.setMinArrivalInterval(Long.parseLong(mainView.getMinArrivalInterval().getText()));
TaskScheduler.getInstance().setMaxLoadPerServer(Integer.parseInt(mainView.getMaxLoadPerServer().getText()));
TaskScheduler.getInstance()
.setSimulationTime(Long.parseLong(mainView.getSimulationInterval().getText()));
TaskScheduler.getInstance().setNumberOfServers(Integer.parseInt(mainView.getNumberOfQueues().getText()));
Refresh refresh = new Refresh();
refresh.execute();
Thread t = new Thread(TaskGenerator.getInstance());
t.start();
}
}
public static void setCancelled(boolean isCancelled) {
MainViewController.isCancelled = isCancelled;
}
}